.. FORMFORM.DWS March 8, 1982
.op
.mt 0
.hm 0
.fm 0
.mb 0
.po 0
.. DIMS has a built-in facility for designing a form for the display and
.. printing of a file.  To make DIMS use your form design, you must create
.. a format control file with all the detailed specifications in it.  There
.. are two ways to make this ".DFO" file.  One is to use the transient com-
.. mand "cform" which can type a form for you to fill out and then accept the
.. specifications.  Another way is to edit this file with WordStar, changing
.. the numbers to fit your design.  Once a ".DFO" file has been created, you
.. can switch the dislay to that form by typing "format <name>" as a DEDIT
.. command.  DEDIT will respond with "Format <name> loaded."
.. 
.. To make a format control file for the DIMS file <name>, start Word-
.. Star, select the N mode and make your file name <name>.DWS.  As soon
.. as you're in the file, do ^KR, and give the name FORMFORM.DWS.  This will
.. read in this file into your workfile.  This file contains all the
.. values which produce the default format (format 0).  You will want to
.. edit these values to design your forms.  You may then delete these instruc-
.. tions to save space, but the single . commands at the top are essential.
..
.. A single format specification controls both screen display and the form
.. on the printer.  These forms may be the same or as different as you
.. like, only the sequence of fields must be the same for both.  Note in
.. the form below that many items have two values on the line.  The second
.. value is for the printer.  The DEDIT variable names into which the
.. the parameters are read are given for debugging.  THE LINES WITH NO DOTS
.. BECOME THE FORM CONTROL FILE, THEY MUST KEEP EXACTLY THE SAME NUMBER OF
.. LINES AND ITEMS IN EACH LINE.
..
.. After you have made all the changes you need, save and print it to a
.. disk file <name>.DFO, which will make all the .. lines disappear.
.. Edit the .DFO file and delete the extra blank line which may appear 
.. at the end.  Try out the format on the DIMS file.  To make corrections 
.. edit <name>.DWS again, and "re-assemble" the .DFO file by printing to 
.. disk again.
..
.. Words and numbers will be read as data input items by a Basic INPUT#
.. statement.  Therefore there must be the expected number of words on
.. each line, or everything after the error will be loaded into DEDIT
.. wrong, and you will get the message "Error in loading format." and/or
.. DEDIT will crash.  Some of the items are input by DEDIT as whole lines
.. (LINE INPUT#), and these can have commas or anything you want.
..
.. Code begins here.
..
.. FO$ Name of this format
   DEFAULT
.. FFD$ Who wrote it, date of last update
   Dan 12/8/81
..
.. PARAMETERS FOR THE WHOLE SCREEN AND PAGE
..
.. TM:  Top margin lines	LTM:  Top margin lines (printer)
   0  				4 
.. (not used for screen)	LLM:  Left margin
   0  				13 
.. SW:  Screen width		LW:  Printing width
   80  				95 
..
.. The following parameters, if not 0, will position a form on the screen
.. and not use scrolling.  This type of form may have bugs in DEDIT.
.. RS:  Records/screen		RP:  Records/page
   0  				0 
.. 
.. If the printer is at or past the conditional page line, it will ad-
.. vance to the next page.  Set to the number of lines on the page minus
.. the top plus bottom margins, minus the normal number of lines used by
.. a record.  This deals with the fact that extra-long data items in for-
.. mats that don't limit the length of the field may overflow into extra
.. lines on the printer.  Dims keeps track of this.
.. (not used for screen)	LLP:  Conditional page line
   0  				52 
..
.. These parameters apply to printers with variable character and line
.. spacing, DEDIT is set up for Diablo 1610/1620.
.. HMI:  120th of an inch per character (use 10 for 12 per inch)
   10 
.. VMI:  48ths of an inch per line (use 8 for 6 per inch)
   8 
.. FSC$:  Reserved for future enhancement.
   0
..
.. The next three lines are heading lines for the screen display.  They
.. will be printed only if something is entered on the line.  You must
.. keep three lines here whether you enter anything on them or not.
.. HL1$:  If this line ends on a space, "PAGE" and the page number will
.. be added automatically.

.. HL2$:

.. HL3$:

..
.. The next three lines are heading lines for each printed page.  Same
.. as above.
.. LHL1$:  If this line ends on a space, the page number will print after.

.. LHL2$:

.. LHL3$:

..
.. HB:  Blank lines after head.	LHB:  Blank lines after heading.
   0  				1 
..
.. PARAMETERS FOR EACH RECORD OF THE FILE
.. 
.. The record number mode can be 0 (don't show number) or 1 (on).
.. RM:				LRM:
   1  				1 
..
.. Location line parameters are used for forms which don't scroll.  They
.. display fields at fixed positions on the screen or page.  Make all
.. location line parameters 0 in a scrolling format.  The top line of the
.. screen is line 1.  The first location line parameter is the line to print
.. the record number on:
.. RLL:				LRLL:
   0  				0 
..
.. Location column parameters position the printhead or cursor.  If there
.. is no CR/LF after the previous item and the location column is 0, the
.. item will be printed after the previous item, wherever that may have 
.. left the printhead.  To print "Lastname, Firstname" define the field
.. name for the Firstname field as ", ".  Use Column 1 to position at the
.. left margin;  0 means put it wherever it is.
..
.. Record number location column:
.. RLC:				LRLC:
   0  				0 
.. The number of CR/LF's after the record number:
.. RNB:				LRNB:
   1  				1 
.. 
.. The following sequence of numbers determines the order in which the
.. fields of the file will be printed, on both the screen and the prin-
.. ter.  THERE MUST BE A ZERO TO TERMINATE THE SEQUENCE.
.. SQ():
   1  2  3  4  5  6  7  8  0
..
.. Number of CR/LF's or blank lines after the whole record:
.. EB:				LEB:
   0  				1 
.. 
.. PARAMETERS FOR EACH FIELD IN RECORD.  USE BLOCK COPY TO REPEAT THIS 
.. BLOCK AS MANY TIMES AS THERE ARE FIELDS TO BE SHOWN IN THE FORMAT.
.. FIELDS ARE DESCRIBED IN THE ORDER THAT THEY APPEAR IN THE FORMAT.
..
.. The FIELD NAME MODE may be 0, 1 or 2.  0 means no field name, 1 means
.. the 4-char default name, and 2 indicates a name will be entered.
.. FM():			LFM():
   1  				1 	
.. F2$():  Screen field name (whole line - used in mode 2 only).

.. LF2$():  Printer field name (whole line - used in mode 2 only).

.. NLL():  Field name loc. ln.  LNLL():  Field name location line
   0  				0 
.. NLC():  Name location col.	LNLC():  Field name location column
   0  				0 
.. The number of CR/LF's after the field name:
.. FMB():			LFMB():
   0  				0 
.. The location line to print the field data:
.. DLL():			LDLL():
   0  				0 
.. The column at which to print the field data:
.. DLC():			LDLC():
   8  				8 
..
.. If the field is a numeric field and the following lines are not blank,
.. the line will be used as a MBASIC PRINT USING string.
.. PU$():  Numeric PRINT USING string for screen.

.. LPU$():  Numeric PRINT USING string for printer.

.. Field length.  Fields may be truncated to a certain number of char-
.. acters to fit in the space designed.  0 means that whatever random
.. length it is will be printed.  -1 means that the field will be skipped
.. (so you can show a field on the screen but skip it on the printer).
.. FL():			LFL():
   0  				0 
.. Number of CR/LF's after this field (use 1 at end of line if necess.)
.. FB():			LFB():
   1				1
.. (end field)
..
.. The FIELD NAME MODE may be 0, 1 or 2.  0 means no field name, 1 means
.. the 4-char default name, and 2 indicates a name will be entered.
.. FM():			LFM():
   1  				1 	
.. F2$():  Screen field name (line - mode 2 only).

.. LF2$():  Printer field name (line - mode 2 only).

.. NLL():  Field name loc. ln.  LNLL():  Field name location line
   0  				0 
.. NLC():  Name location col.	LNLC():  Field name location column
   0  				0 
.. The number of CR/LF's after the field name:
.. FMB():			LFMB():
   0  				0 
.. The location line to print the field data:
.. DLL():			LDLL():
   0  				0 
.. The column at which to print the field data:
.. DLC():			LDLC():
   8  				8 
..
.. If the field is a numeric field, a MBASIC PRINT USING string entered
.. here will be used.
.. PU$():  Numeric PRINT USING string for screen.

.. LPU$():  Numeric PRINT USING string for printer.

.. Field length.  Fields may be truncated to a certain number of char-
.. acters to fit in the space designed.  0 means that whatever random
.. length it is will be printed.  -1 means that the field will be skipped
.. (so you can show a field on the screen but skip it on the printer).
.. FL():			LFL():
   0  				0 
.. Number of CR/LF's after this field (use 1 at end of line if necess.)
.. FB():			LFB():
   1				1
.. (end field)
..
.. The FIELD NAME MODE may be 0, 1 or 2.  0 means no field name, 1 means
.. the 4-char default name, and 2 indicates a name will be entered.
.. FM():			LFM():
   1  				1 	
.. F2$():  Screen field name (line - mode 2 only).

.. LF2$():  Printer field name (line - mode 2 only).

.. NLL():  Field name loc. ln.  LNLL():  Field name location line
   0  				0 
.. NLC():  Name location col.	LNLC():  Field name location column
   0  				0 
.. The number of CR/LF's after the field name:
.. FMB():			LFMB():
   0  				0 
.. The location line to print the field data:
.. DLL():			LDLL():
   0  				0 
.. The column at which to print the field data:
.. DLC():			LDLC():
   8  				8 
..
.. If the field is a numeric field, a MBASIC PRINT USING string entered
.. here will be used.
.. PU$():  Numeric PRINT USING string for screen.

.. LPU$():  Numeric PRINT USING string for printer.

.. Field length.  Fields may be truncated to a certain number of char-
.. acters to fit in the space designed.  0 means that whatever random
.. length it is will be printed.  -1 means that the field will be skipped
.. (so you can show a field on the screen but skip it on the printer).
.. FL():			LFL():
   0  				0 
.. Number of CR/LF's after this field (use 1 at end of line if necess.)
.. FB():			LFB():
   1				1
.. (end field)
..
.. The FIELD NAME MODE may be 0, 1 or 2.  0 means no field name, 1 means
.. the 4-char default name, and 2 indicates a name will be entered.
.. FM():			LFM():
   1  				1 	
.. F2$():  Screen field name (line - mode 2 only).

.. LF2$():  Printer field name (line - mode 2 only).

.. NLL():  Field name loc. ln.  LNLL():  Field name location line
   0  				0 
.. NLC():  Name location col.	LNLC():  Field name location column
   0  				0 
.. The number of CR/LF's after the field name:
.. FMB():			LFMB():
   0  				0 
.. The location line to print the field data:
.. DLL():			LDLL():
   0  				0 
.. The column at which to print the field data:
.. DLC():			LDLC():
   8  				8 
..
.. If the field is a numeric field, a MBASIC PRINT USING string entered
.. here will be used.
.. PU$():  Numeric PRINT USING string for screen.

.. LPU$():  Numeric PRINT USING string for printer.

.. Field length.  Fields may be truncated to a certain number of char-
.. acters to fit in the space designed.  0 means that whatever random
.. length it is will be printed.  -1 means that the field will be skipped
.. (so you can show a field on the screen but skip it on the printer).
.. FL():			LFL():
   0  				0 
.. Number of CR/LF's after this field (use 1 at end of line if necess.)
.. FB():			LFB():
   1				1
.. (end field)
..
.. The FIELD NAME MODE may be 0, 1 or 2.  0 means no field name, 1 means
.. the 4-char default name, and 2 indicates a name will be entered.
.. FM():			LFM():
   1  				1 	
.. F2$():  Screen field name (line - mode 2 only).

.. LF2$():  Printer field name (line - mode 2 only).

.. NLL():  Field name loc. ln.  LNLL():  Field name location line
   0  				0 
.. NLC():  Name location col.	LNLC():  Field name location column
   0  				0 
.. The number of CR/LF's after the field name:
.. FMB():			LFMB():
   0  				0 
.. The location line to print the field data:
.. DLL():			LDLL():
   0  				0 
.. The column at which to print the field data:
.. DLC():			LDLC():
   8  				8 
..
.. If the field is a numeric field, a MBASIC PRINT USING string entered
.. here will be used.
.. PU$():  Numeric PRINT USING string for screen.

.. LPU$():  Numeric PRINT USING string for printer.

.. Field length.  Fields may be truncated to a certain number of char-
.. acters to fit in the space designed.  0 means that whatever random
.. length it is will be printed.  -1 means that the field will be skipped
.. (so you can show a field on the screen but skip it on the printer).
.. FL():			LFL():
   0  				0 
.. Number of CR/LF's after this field (use 1 at end of line if necess.)
.. FB():			LFB():
   1				1
.. (end field)
..
.. The FIELD NAME MODE may be 0, 1 or 2.  0 means no field name, 1 means
.. the 4-char default name, and 2 indicates a name will be entered.
.. FM():			LFM():
   1  				1 	
.. F2$():  Screen field name (line - mode 2 only).

.. LF2$():  Printer field name (line - mode 2 only).

.. NLL():  Field name loc. ln.  LNLL():  Field name location line
   0  				0 
.. NLC():  Name location col.	LNLC():  Field name location column
   0  				0 
.. The number of CR/LF's after the field name:
.. FMB():			LFMB():
   0  				0 
.. The location line to print the field data:
.. DLL():			LDLL():
   0  				0 
.. The column at which to print the field data:
.. DLC():			LDLC():
   8  				8 
..
.. If the field is a numeric field, a MBASIC PRINT USING string entered
.. here will be used.
.. PU$():  Numeric PRINT USING string for screen.

.. LPU$():  Numeric PRINT USING string for printer.

.. Field length.  Fields may be truncated to a certain number of char-
.. acters to fit in the space designed.  0 means that whatever random
.. length it is will be printed.  -1 means that the field will be skipped
.. (so you can show a field on the screen but skip it on the printer).
.. FL():			LFL():
   0  				0 
.. Number of CR/LF's after this field (use 1 at end of line if necess.)
.. FB():			LFB():
   1				1
.. (end field)
..
.. The FIELD NAME MODE may be 0, 1 or 2.  0 means no field name, 1 means
.. the 4-char default name, and 2 indicates a name will be entered.
.. FM():			LFM():
   1  				1 	
.. F2$():  Screen field name (line - mode 2 only).

.. LF2$():  Printer field name (line - mode 2 only).

.. NLL():  Field name loc. ln.  LNLL():  Field name location line
   0  				0 
.. NLC():  Name location col.	LNLC():  Field name location column
   0  				0 
.. The number of CR/LF's after the field name:
.. FMB():			LFMB():
   0  				0 
.. The location line to print the field data:
.. DLL():			LDLL():
   0  				0 
.. The column at which to print the field data:
.. DLC():			LDLC():
   8  				8 
..
.. If the field is a numeric field, a MBASIC PRINT USING string entered
.. here will be used.
.. PU$():  Numeric PRINT USING string for screen.

.. LPU$():  Numeric PRINT USING string for printer.

.. Field length.  Fields may be truncated to a certain number of char-
.. acters to fit in the space designed.  0 means that whatever random
.. length it is will be printed.  -1 means that the field will be skipped
.. (so you can show a field on the screen but skip it on the printer).
.. FL():			LFL():
   0  				0 
.. Number of CR/LF's after this field (use 1 at end of line if necess.)
.. FB():			LFB():
   1				1
.. (end field)
..
.. The FIELD NAME MODE may be 0, 1 or 2.  0 means no field name, 1 means
.. the 4-char default name, and 2 indicates a name will be entered.
.. FM():			LFM():
   1  				1 	
.. F2$():  Screen field name (line - mode 2 only).

.. LF2$():  Printer field name (line - mode 2 only).

.. NLL():  Field name loc. ln.  LNLL():  Field name location line
   0  				0 
.. NLC():  Name location col.	LNLC():  Field name location column
   0  				0 
.. The number of CR/LF's after the field name:
.. FMB():			LFMB():
   0  				0 
.. The location line to print the field data:
.. DLL():			LDLL():
   0  				0 
.. The column at which to print the field data:
.. DLC():			LDLC():
   8  				8 
..
.. If the field is a numeric field, a MBASIC PRINT USING string entered
.. here will be used.
.. PU$():  Numeric PRINT USING string for screen.

.. LPU$():  Numeric PRINT USING string for printer.

.. Field length.  Fields may be truncated to a certain number of char-
.. acters to fit in the space designed.  0 means that whatever random
.. length it is will be printed.  -1 means that the field will be skipped
.. (so you can show a field on the screen but skip it on the printer).
.. FL():			LFL():
   0  				0 
.. Number of CR/LF's after this field (use 1 at end of line if necess.)
.. FB():			LFB():
   1				1
.. (end field)
..
